/*
 * Copyright 2016 SimplifyOps, Inc. (http://simplifyops.com)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.dtolabs.rundeck.app.internal.workflow

import com.dtolabs.rundeck.core.execution.workflow.state.ExecutionState
import com.dtolabs.rundeck.core.execution.workflow.state.MutableExecutionState
import com.dtolabs.rundeck.core.execution.workflow.state.StepState

/**
 * $INTERFACE is ...
 * User: greg
 * Date: 10/16/13
 * Time: 10:41 AM
 */
public interface MutableStepState extends StepState, MutableExecutionState {
    /**
     * The execution state
     * @return
     */
    void setExecutionState(ExecutionState state)

    /**
     * Any metadata
     * @return
     */
    void setMetadata(Map metadata)

    /**
     * Potential error message if state is failed
     * @return
     */
    void setErrorMessage(String message)

    /**
     * Set the start time
     * @param startTime
     */
    void setStartTime(Date startTime)

    /**
     * Set the update time
     * @param startTime
     */
    void setUpdateTime(Date startTime)

    /**
     * Set the end time
     * @param startTime
     */
    void setEndTime(Date startTime)

}
